package com.lagou.edu.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Enumeration;

/**
 * @Author wyx
 * @Date 2020/1/27 20:32
 */
public class MyIntercepter implements HandlerInterceptor {
    /**
     * 会在handler方法业务逻辑执行之前执行
     * 往往在这里完成权限校验工作
     * @param request
     * @param response
     * @param handler
     * @return  返回值boolean代表是否放行，true代表放行，false代表中止
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("MyIntercepter preHandle......");

        //获取请求的RUi:去除http:localhost:8080这部分剩下的
                 String uri = request.getRequestURI();
                 //UTL:除了login.jsp是可以公开访问的，其他的URL都进行拦截控制
                 if (uri.indexOf("/resume/login") >= 0||uri.indexOf("/resume/addSession") >= 0) {
                     System.out.println("取消拦截！");
                         return true;
                     }
        System.out.println("开始拦截！");
                 //获取session
                 HttpSession session = request.getSession();

//获取指定的session值。
        String username= (String)session.getAttribute("username");
        String password= (String)session.getAttribute("password");

        if (username!=null&&password!=null&&username.equals("admin")&&password.equals("admin")){
            System.out.println("验证通过");
            return true;
        }

//                 User user = (User) session.getAttribute("USER_SESSION");
//                 //判断session中是否有用户数据，如果有，则返回true，继续向下执行
//                 if (user != null) {
//                         return true;
//                     }
                 //不符合条件的给出提示信息，并转发到登录页面
                 request.setAttribute("msg", "您还没有登录，请先登录！");
                 response.sendRedirect("login");
//               request.getRequestDispatcher("login").forward(request, response);
        System.out.println("验证不通过");
                 return false;

    }


    /**
     * 会在handler方法业务逻辑执行之后尚未跳转页面时执行
     * @param request
     * @param response
     * @param handler
     * @param modelAndView  封装了视图和数据，此时尚未跳转页面呢，你可以在这里针对返回的数据和视图信息进行修改
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//        System.out.println("MyIntercepter01 postHandle......");
    }

    /**
     * 页面已经跳转渲染完毕之后执行
     * @param request
     * @param response
     * @param handler
     * @param ex  可以在这里捕获异常
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//        System.out.println("MyIntercepter01 afterCompletion......");
    }
}
